﻿using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using pttk_htt_hr.Constant;
using pttk_htt_hr.DAO;
using pttk_htt_hr.Utility;

namespace pttk_htt_hr.GUI
{
    public partial class MH_ThucDonTuanToi_Tim : Form
    {
        #region Initial
        public MH_ThucDonTuanToi_Tim()
        {
            InitializeComponent();
        }
        #endregion

        #region Method
        void search()
        {
            /*
             *  Bước 1: Chuẩn bị đối số 
             *  1. Tham số cho cấu sql có điều kiện: @MaPLTDTT, @TU_NGAY, @DEN_NGAY
             *  2. Tham số cho cấu sql không điều kiện (không tính MaPLTDTT): @MaPLTDTT
             */

            List<SqlParameter> HasConds_Parameters = new List<SqlParameter>();
            HasConds_Parameters.Add(new SqlParameter(ParameterConstant.TU_NGAY, dpTuNgay.Text));
            HasConds_Parameters.Add(new SqlParameter(ParameterConstant.DEN_NGAY, dpDenNgay.Text));

            List<SqlParameter> NoConds_Parameters = new List<SqlParameter>();
            NoConds_Parameters.Add(new SqlParameter(ParameterConstant.MaPLTDTT, txtMaPLTDTT.Text));

            /*
             *  Bước 2: Gọi xử lý từ BLogic
             */

            List<Dictionary<string, string>> LstDic;
            if (dpTuNgay.Text != null || dpDenNgay.Text != null)
            {
                LstDic = PhieuLapThucDonTuanToiBUS.Get_List(HasConds_Parameters, true);
            }
            else
            {
                LstDic = PhieuLapThucDonTuanToiBUS.Get_List(NoConds_Parameters, false);
            }

            /*
             *  Bước 3: Đưa kết quả ra màn hình
             */

            // Xóa dữ liệu trên grid trước khi đẩy data lên gridview
            this.dgvThucDon.Rows.Clear();
            // Put data into grid view
            DataGridUtil.AddData_To_DataGridView(LstDic, dgvThucDon, true, DataGridUtil.GetAll_ColumnName_DataGridView(dgvThucDon).ToArray());
        }

        void single_del()
        {
            String MaPLTDTT = DataGridUtil.Get_CellValue_When_RowClick(dgvThucDon, "MaPLTDTT");

            /*
             *  Bước 1: Chuẩn bị tham số
             *  1. Xóa data trong bảng CHI_TIET_PHIEU_LAP_TD_TUAN_TOI: @MaPLTDTT
             *  2. Xóa data trong bảng PHIEU_LAP_TD_TUAN_TOI: @MaPLTDTT
             */

            List<SqlParameter> CTPLTDTTparams = new List<SqlParameter>();
            CTPLTDTTparams.Add(new SqlParameter(ParameterConstant.MaPLTDTT, MaPLTDTT));

            List<SqlParameter> PLTDTTparams = new List<SqlParameter>();
            PLTDTTparams.Add(new SqlParameter(ParameterConstant.MaPLTDTT, MaPLTDTT));


            /*
             *  Bước 2: Gọi xử lý từ BLogic
             */

            if (SystemConstant.SP_EXEC_OK == ThucDonTuanToiBUS.Delete_ThucDonTuanToi(CTPLTDTTparams, PLTDTTparams))
            {
                Dialog dg = new Dialog();
                dg.Show_Info_MessageBox_DeleteOK();

                // close current window
                //this.Close();
            }
            else
            {
                Dialog dg = new Dialog();
                dg.Show_Info_MessageBox_DeleteNG();
            }
        }

        void multi_del()
        {
            /*
                 *  Bước 1: Chuẩn bị tham số
                 *  1. 
                 *  2. 
                 */


            // Get data from grid view
            List<ArrayList> ExtractedData = DataGridUtil.ExtractDataFromDataGridViewRowSelected(dgvThucDon, new string[] { TableColumnMapping.MaPLTDTT }, "CheckBoxCell");

            if ((ExtractedData != null) && (ExtractedData.Count > 0)) // Đảm bảo có 1 checkbox được check
            {
                // Chuyển List<ArrayList>  -> List<Dictionary<string, object>>
                List<Dictionary<string, string>> DataSource = DictionaryUtil.Convert_ListAraryList_To_Dictionary(ExtractedData, TableColumnMapping.MaPLTDTT);

                //Chuẩn bị tham số
                List<List<SqlParameter>> CTPLTDTTparams = SqlParameterUitl.MakeList_SqlParameter(DataSource, new string[] { TableColumnMapping.MaPLTDTT });

                List<List<SqlParameter>> PLTDTTparams = SqlParameterUitl.MakeList_SqlParameter(DataSource, new string[] { TableColumnMapping.MaPLTDTT });


                /*
                 *  Bước 2: Gọi xử lý từ BLogic
                 */

                if (SystemConstant.SP_EXEC_OK == ThucDonTuanToiBUS.DeleteAll_ThucDonTuanToi(CTPLTDTTparams, PLTDTTparams))
                {
                    Dialog dg = new Dialog();
                    dg.Show_Info_MessageBox_DeleteOK();

                    // close current window
                    //this.Close();
                    search();
                }
                else
                {
                    Dialog dg = new Dialog();
                    dg.Show_Info_MessageBox_DeleteNG();
                }
            }//End ExtractedData
            else
            {
                Dialog.Show_Info_MessageBox_CheckBoxCheck();
            }
        }

        void gridview_click_handle()
        {
            /*
             *  Bước 1: Kiểm tra user có click lên Link MaPLTDTT Hoặc là Button Sữa hay không
             *  Bước 2: Nếu có click thì gọi xử lý từ BLogic
             */
            if (DataGridUtil.Check_Match_ColumnName_When_CellClick(dgvThucDon, "Sua")) // Sua là ButtonId trên grid
            {
                String MaPLTDTT = DataGridUtil.Get_CellValue_When_RowClick(dgvThucDon, "MaPLTDTT");

                MH_DanhSachThucDon_TaoSua sua_pltdtt = new MH_DanhSachThucDon_TaoSua(MaPLTDTT, ActionKeyConstant.ACTION_KEY_EDIT);
                sua_pltdtt.Show();
            }
            else if (DataGridUtil.Check_Match_ColumnName_When_CellClick(dgvThucDon, "MaPLTDTT"))
            {
                String MaPLTDTT = DataGridUtil.Get_CellValue_When_RowClick(dgvThucDon, "MaPLTDTT");

                MH_DanhSachThucDonTuanToi_Xem xem_pltdtt = new MH_DanhSachThucDonTuanToi_Xem(MaPLTDTT);
                xem_pltdtt.Show();
            }
            else if (DataGridUtil.Check_Match_ColumnName_When_CellClick(dgvThucDon, "btnDel"))
            {
                if (Dialog.Show_MessageBox_YesNo_Delete())
                {
                    single_del();
                }
            }
        }
   #endregion

        #region Event
        private void btnTim_Click(object sender, EventArgs e)
        {
            search();
        }

        private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            gridview_click_handle();
        }

        private void btnDong_Click(object sender, EventArgs e)
        {
            if (Dialog.Show_MessageBox_YesNo_Close())
            {
                this.Close();    
            }   
        }

        private void btnXoa_Click(object sender, EventArgs e)
        {
            // Xóa tất cả được chọn
            if (Dialog.Show_MessageBox_YesNo_Delete())
            {
                multi_del();
            }
        }
        #endregion
    }
}
